/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.socialfun.controladores;

import com.ec.socialfun.datamanager.CambioContrasenaDataManager;
import com.ec.socialfun.excepciones.CambioContrasenaException;
import com.ec.socialfun.excepciones.EncriptacionException;
import com.ec.socialfun.servicios.UsuarioFacade;
import com.ec.socialfun.util.CambioContrasena;
import com.ec.socialfun.util.EncriptacionUtil;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

/**
 *
 * @author jorge
 */
@ManagedBean
@RequestScoped
public class CambioContrasenaControlador extends PadreControlador {

    private static final org.jboss.logging.Logger LOG = org.jboss.logging.Logger.getLogger(CambioContrasenaControlador.class.getName());
    @ManagedProperty(value = "#{cambioContrasenaDataManager}")
    private CambioContrasenaDataManager cambioContrasenaDataManager;
    @EJB
    private UsuarioFacade usuarioFacade;

    /**
     * Creates a new instance of CambioContrasenaControlador
     */
    public CambioContrasenaControlador() {
    }

    public void modificarContrasena() {

        try {
            CambioContrasena cambioContrasena = getCambioContrasenaDataManager().getCambioContrasena();
            cambioContrasena.setContrasenaAnterior(EncriptacionUtil.encriptar(cambioContrasena.getContrasenaAnterior()));
            cambioContrasena.setContrasenaActual(getCambioContrasenaDataManager().getUsuario().getUsContrasena());
            cambioContrasena.setMailUsuario(this.obtenerUsuarioLogeado());
            if (cambioContrasena.validarContrasenaAnterior()) {
                if (cambioContrasena.validarContrasenaNueva()) {
                    usuarioFacade.modificarContrasenaUsuario(cambioContrasena);
                    getCambioContrasenaDataManager().setCambioContrasena(new CambioContrasena());
                    this.mensajeExitoso("Contraseña modificada correctamente");
                } else {
                    this.mensajeError("La Contraseña no coincide con la confirmación");
                }
            } else {
                this.mensajeError("La Contraseña actual no coincide con la almacenada");
            }
        } catch (EncriptacionException ex) {
            LOG.error("Error al encriptar contrasena " + ex);
            this.mensajeError("Error al encriptar Contraseña ");
        } catch (CambioContrasenaException ex) {
            LOG.error("Error al modificar contrasena " + ex);
            this.mensajeError("Error al modificar Contraseña ");
        }
    }

    @Override
    public void iniciarDatos() {
        getCambioContrasenaDataManager().setUsuario(usuarioFacade.recuperaUsuarioPorMail(this.obtenerUsuarioLogeado()));
    }

    public CambioContrasenaDataManager getCambioContrasenaDataManager() {
        return cambioContrasenaDataManager;
    }

    public void setCambioContrasenaDataManager(CambioContrasenaDataManager cambioContrasenaDataManager) {
        this.cambioContrasenaDataManager = cambioContrasenaDataManager;
    }
}
